package com.sskj.common.util;

import java.util.regex.Pattern;

/**
 * 校验工具类
 */
public class ValidatorUtil {

    //手机号码正则表达式
    public static final String MOBILE_PATTERN="^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))(\\d{8})$";

    // 邮箱正则表达式
    public static final String EMAIL_PATTERN = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

    // Quartz风格的Cron表达式正则（支持秒、年等扩展字段）
    private static final Pattern QUARTZ_CRON_PATTERN = Pattern.compile(
            "^((([0-9]|,|-|\\*|/|\\?|L|W|C)+)\\s+){5,6}(([0-9]|,|-|\\*|/|\\?|L|W|C)+)$"
    );

    /**
     * 手机号校验
     * @param phone 手机号
     * @return boolean
     */
    public static boolean validatePhone(String phone) {
        if (StrUtil.isBlank(phone)) {
            return Boolean.FALSE;
        }
        return phone.matches(MOBILE_PATTERN);
    }

    /**
     * 校验邮箱
     * @param email 邮箱
     * @return boolean
     */
    public static boolean validateEmail(String email) {
        if (StrUtil.isBlank(email)) {
            return Boolean.FALSE;
        }
        return email.matches(EMAIL_PATTERN);
    }

    /**
     * 验证Quartz风格的Cron表达式是否合法
     * @param cronExpression Cron表达式
     * @return 是否合法
     */
    public static boolean isValidQuartzCron(String cronExpression) {
        if (cronExpression == null || cronExpression.trim().isEmpty()) {
            return false;
        }
        return QUARTZ_CRON_PATTERN.matcher(cronExpression.trim()).matches();
    }
}
